package org.ehe.finance.currency.domain.bo;

import com.baomidou.mybatisplus.annotation.TableField;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ehe.common.mybatis.core.domain.BaseEntity2;
import org.ehe.finance.currency.domain.ErpFinanceCurrency;
import org.ehe.finance.subject.domain.ErpFinanceAccountSubject;

import java.math.BigDecimal;

/**
 * @author :zhangnn
 * @className :ErpFinanceCurrencyBo
 * @description: TODO
 * @date 2025-08-26 17:04:43
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ErpFinanceCurrency.class, reverseConvertGenerate = false)
public class ErpFinanceCurrencyBo extends BaseEntity2 {

    private Long id;

    /**
     * 币种编码（非空，如CNY、USD）
     * 对应表字段：currency_code
     */
    @NotBlank(message = "币种编码不能为空（如CNY、USD）")
    private String currencyCode;

    /**
     * 币种名称（非空，如人民币、美元）
     * 对应表字段：currency_name
     */
    @NotBlank(message = "币种名称不能为空（如人民币、美元）")
    private String currencyName;

    /**
     * 货币符号（可为空，如¥、$）
     * 对应表字段：symbol
     */
    private String symbol;

    /**
     * 是否本位币（默认0：否，1：是）
     * 对应表字段：is_base（bit(1)类型）
     * 注意：MySQL的bit(1)在Java中映射为Boolean，true对应1，false对应0
     */
    private Boolean isBase;

    /**
     * 汇率（默认1.0000，保留4位小数）
     * 对应表字段：exchange_rate（decimal(10,4)）
     * 用BigDecimal避免浮点精度丢失，符合财务数据规范
     */
    private BigDecimal exchangeRate;

    /**
     * 小数位数（默认2位，如日元常用4位）
     * 对应表字段：decimal_places（tinyint）
     */
    private Integer decimalPlaces;

    /**
     * 状态（0：禁用，1：启用；默认1）
     * 对应表字段：status（tinyint）
     * 建议后续可通过枚举优化（如CurrencyStatusEnum），此处先用Integer保持简洁
     */
    private Integer status;
}
